// ConcreteGLObject3D.h

#ifndef CONCRETEGLOOBJECT3D_H_
#define CONCRETEGLOOBJECT3D_H_

#include <stdio.h>
#include <fstream>
#include <string>
#include <boost/algorithm/string.hpp>
#include <boost/lexical_cast.hpp>
#include <vector>

#include "Angel.h"
#include "DebugHelper.h"
#include "GLObject3D.h"

namespace Voltron
{

	class ConcreteGLObject3D: public GLObject3D
	{

		private:

		// Private Constructors
		// Private Destructor
		// Private properties
		// Private members

		protected:

		// Protected Constructors
		// Protected Destructor
		// Protected properties
		// Protected members

		public:
		// Public Constructors
		ConcreteGLObject3D();
		ConcreteGLObject3D(int quantityVerts);
		ConcreteGLObject3D(int quantityVerts, vec4* positionVerts, vec4* colorVerts, GLuint shaderprogram);

		// Public Destructor
		~ConcreteGLObject3D();

		// Public properties
                GLint flag;

		// Public Members
		void render();
                void setDrawMode(GLenum mode);
                void renderSelectionColor();
                bool isSelected(GLubyte pixel[4]);
                mat4 transformModel(mat4 transform);
	};
}

#endif
